package ace.module.product.core.impl.manager;

import ace.cmp.data.spring.data.jdbc.querydsl.rsql.core.model.SaveContext;
import ace.cmp.data.spring.data.jdbc.querydsl.rsql.core.model.SaveListContext;
import ace.module.common.core.impl.manager.EntityOfAppManager;
import ace.module.product.api.model.dto.PmsProductSkuDto;
import ace.module.product.api.model.input.PmsProductSkuSaveInput;
import ace.module.product.core.impl.dao.entity.PmsProduct;
import ace.module.product.core.impl.dao.entity.PmsProductAttribute;
import ace.module.product.core.impl.dao.entity.PmsProductAttributeValue;
import ace.module.product.core.impl.dao.entity.PmsProductSku;
import ace.module.product.core.impl.dao.model.bo.PmsProductAttributeSaveBo;
import java.util.List;
import java.util.TreeMap;

/**
 * 商品Sku基础资料 spring data jdbc querydsl rsql manager.
 *
 * @author Caspar
 */
public interface PmsProductSkuManager extends EntityOfAppManager<PmsProductSku, Long, PmsProductSkuDto> {

  SaveContext<PmsProductSku> assembleSaveContext(
      SaveContext<PmsProduct> pmsProductSaveContext,
      PmsProductAttributeSaveBo pmsProductAttributeSaveBo,
      PmsProductSkuSaveInput pmsProductSkuSaveInput
  );

  String buildAttributeKey(TreeMap<String, String> map);

  void checkValidSkuTotalCount(PmsProductAttributeSaveBo pmsProductAttributeSaveBo, int pmsProductSkuCount);
}